今天介紹NLP常見任務的第三項:自然語言生成(Natural Language Generation)
自然語言處理的一大目標是要讓電腦讀懂人類在說什麼,就如同我們前兩天的內容:讓電腦辨識聲音以及知道句型架構。今天介紹的第一個任務稱為自然語言生成,這任務的目標和昨天恰恰相反,要讓電腦寫出人類讀得懂的語言。
人類之間之所以能明白彼此所說出來的語言,有個重要因素,就是我們的語言就類似於一個模型。在模型之內的,即使其中一些字轉換了,我們依然能理解;然而若這句話不曾出現在我們的認知中,我們可能就難以理解這話的涵義了,這或許是為什麼我們需要讀那麼多文言文、唐詩、宋詞那些不會出現在現代的語法結構和用詞了。
舉個語言模型的例子:「今天我要去跑步。」我們可以把跑步替換成任何動詞,「今天我要去爬山」或「今天我要去喝咖啡」,這些替換都不成問題,但若是切換成形容詞:「今天我要去溫暖的」,身為人類的我們就會知道,這句話很怪,好像缺了什麼。
另一種常出現的問題就是語法結構分析(parsing),雖然這不在我三十天的內容之中,但還是舉個例子:「今天我要去跑步」若被改成「跑步我今天要去」,這句話還是能理解,只是作為中文母語人士會覺得這句話超怪。而若是直接變成「跑步我要去今天」,這任何一個聽得懂中文的人應該都會很崩潰。因此,說出讓人能夠聽懂同時不覺得怪的一句話就是語言模型在做的事情。關於語言模型的應用,我會在之後的內容中更詳細地說。
寫出讓人理解的句子固然重要,還需要言之有理,那就是自然語言生成的奧妙之處了!首先,電腦需要決定這句話的內容,像是前面例子的關鍵內容是「時間」(今天)和「運動」(跑步);接著電腦會根據語法結構架構這句話,同時也會在字詞當中做選擇,像是「今天」的同義字就有「今朝」、「今日」,「跑步」也有些同義字如「小跑」、「飛跑」、「飛奔」。但如果今天電腦真的生成:「今朝我要去飛奔。」那這台電腦還是砍掉重練吧。
今朝我要去飛奔是什麼XD
不過例子舉得不錯,很貼近生活~
希望每一篇都能夠深入淺出,讓所有人都看得懂囉!
前陣子許多人對於電腦會寫論文感到驚恐,但事實上這個技術已經發展了很長一段時間了。
最近有人在用自然語言生成寫詩呢哈哈
在墨爾本大學也有認識的中國同學他在用自然語言生成寫唐詩耶,該不會同一位?